#include "BasicClass.h"
#include "world.h"
void Ji_sheng_zhong_zi(Monster *source, Monster *target) {
	int noflag = 1;
	for (int i = 0; i < 10; i++) {
		if (source->myeffect[i] == Ji_sheng_zhong_zi)
			noflag = 0;
	}
	if (noflag == 1) { 
		for (int i = 0; i < 10; i++) {
			if (source->myeffect[i] == NULL) {
				source->myeffect[i] = Ji_sheng_zhong_zi;
				break;
			}
		} 
	}
	

	cout << "寄生种子技能效果" << endl;
	target->HP -= 5;
	source->HP += 5;
	return;
}
void Bian_yin(Monster* source, Monster* target) {
	cout << "变硬技能效果" << endl;
	source->Defense += 1;
}
/*DEBUG用*/
Monster m1, m2;//通哥宝可梦
Skill s1, s2, s3, s4;
Player p1;
int SkillCreatInit_debug() {
	vector<Skill> S_list;
	s1.Creat("寄生种子", 0, 2, 5, Grass,Ji_sheng_zhong_zi);
	s2.Creat("变硬", 0, 1, 1, Normal, Bian_yin);
	s3.Creat("天衣无缝", 0, 1, 1, Normal, NULL);
	s4.Creat("猛击", 5, 0, 1, Grass, NULL);
	return OK;
}
int MonsterCreatInit_debug() {
	vector<Monster> M_list;
	// 添加元素
	
	m1.Creat((string)"tung tung tung sahur",Grass);
	m1.have_skill[0].skill = &s1;
	m1.have_skill[1].skill = &s2;
	m1.have_skill[2].skill = &s3;
	m1.have_skill[3].skill = &s4;
	/*手动技能添加*/
	m2.Creat((string)"tratrali", Water);
	m2.have_skill[0].skill = &s1;
	m2.have_skill[1].skill = &s2;
	m2.have_skill[2].skill = &s3;
	m2.have_skill[3].skill = &s4;

	M_list.push_back(m1);
	M_list.push_back(m2);
	m1.Revive();
	m2.Revive();
	//m1.debugSee();

	cout << "宝可梦初始化成功";
	return OK;
}
int BattleCreat_debug() {
	p1.PlayerInit("player1");
	Battle b1;
	b1.Init(&m1, &m2);
	b1.StartBattle();
	return OK;
}

key input;//int last_input = key::w;
bool objects[2] = { 0 };

/*
更新日志 6.1
搭了个框架，明天有时间的话接着写交互

另外，player的图还没上，下面注掉是为了能运行（
顺带把路径改为相对路径 ，本来就是小图，拿git传也没啥问题（
总体没干太多（
*/

//int main3()
//{
//	//initgraph(WINDOW_WIDTH, WINDOW_HEIGHT);
//	init_world();
//	show_world();
//	system("pause");
//	closegraph();
//
//	
//	Player xiaoming;
//	xiaoming.PlayerInit("xiaoming");
//
//	while (1) 
//	{
//		input = task_estimate();
//		if (input == none_input)
//		{
//		}
//		else {
//			interact(input,xiaoming);              
//
//			/*第一图层*/
//			show_world();
//			/*第二图层*/
//			show_player(xiaoming,input);
//
//
//		}
//	}
//
//
//}

/*

更新日志 6.2
基础部分完成，需要torch函数链接前面的内容
需要怪物设计啥的
靠你们了

*/
void InitSkills() {
	vineWhip.Creat("藤鞭", 40, 0, 5, Grass, nullptr);
	tackle.Creat("撞击", 35, 0, 3, Normal, nullptr);
	growl.Creat("叫声", 0, 2, 2, Normal, nullptr);
	poisonPowder.Creat("毒粉", 0, 3, 4, Normal, PoisonEffect);

	ember.Creat("火花", 40, 0, 5, Fire, BurnEffect);
	scratch.Creat("抓", 40, 0, 3, Normal, nullptr);
	smokescreen.Creat("烟雾", 0, 2, 3, Normal, AccuracyDownEffect);

	waterGun.Creat("水枪", 40, 0, 5, Water, nullptr);
	tailWhip.Creat("摇尾巴", 0, 2, 2, Normal, nullptr);
	withdraw.Creat("缩入壳中", 0, 2, 3, Water, DefenseUpEffect);

	hydroPump.Creat("水炮", 110, 2, 8, Water, nullptr);  // 高威力水系技能
	skullBash.Creat("火箭头槌", 130, 3, 10, Normal, DefenseUpEffect);  // 蓄力攻击，同时提升防御
	rapidSpin.Creat("高速旋转", 20, 0, 5, Water, nullptr);  // 解除束缚效果
	rainDance.Creat("求雨", 0, 5, 5, Water, RainEffect);  // 改变天气
}
int main()
{
	// 初始化游戏窗口和资源
	init_world();
	InitSkills();
	// 创建玩家对象并初始化
	Player xiaoming;
	Squirtle s0;
	xiaoming.PlayerInit("xiaoming");
	xiaoming.getpokmon(&s0);
	// 显示初始游戏画面
	show_world();
	show_player(xiaoming, s);

	// 游戏主循环
	while (1)
	{


		// 获取用户输入
		key input = task_estimate();

		// 处理用户交互
		if (input != none_input)
		{
			interact(input, xiaoming);

			// 刷新游戏画面
			show_world();           // 绘制地图
			show_player(xiaoming, input); // 绘制玩家
			show_object(xiaoming.pack);
		}

		// 控制游戏帧率
		Sleep(40); // 约60FPS
	}

	// 清理资源并关闭窗口
	closegraph();
	return 0;
}